'use strict'

let product = [
    {
        id: 1,
        name: '衬衫',
        price: 58,
        stock: 20,
        supplier: '以纯'
    },
    {
        id: 2,
        name: '牛仔裤',
        price: 99,
        stock: 20,
        supplier: '李宁',
    },
    {
        id: 3,
        name: '内裤',
        price: 39,
        stock: 15,
        supplier: '七匹狼'
    }
]

// 首页
let fn_product = (ctx, next) => {
    let keyword = ctx.request.query.keyword || ''
    if (keyword) {  // keyword存在的，进行过滤查找
        return product.filter(item => {
            return item.id == keyword || item.name == keyword ||
                item.price == keyword || item.supplier == keyword
        })
    } else { // 不存在直接返回商品信息
        ctx.body = product
    }
}

// 新增
let fn_post = (ctx, next) => {
    /*
        从前端请求post过来的数据，稍微处理，push到product数组
        1.从请求拿到传递过来的数据
        2.处理拿到的数据（传递过来的数据可能为空，有可能属性名称和原数组product数组中的元素不一致）
        3.push到数组
    */
    // 获得请求数据
    let obj = ctx.request.body;
    console.log(obj); //? 现在传过来的数据是怎样的
    if (obj.hasOwnProperty('name') && obj.hasOwnProperty('price') && obj.hasOwnProperty('stock') && obj.hasOwnProperty('supplier') &&
        obj.name && obj.price && obj.stock && obj.supplier) {
        // 这里需要考虑数组为空的时候
        if (product.length > 0) {
            obj.id = product[product.length - 1].id + 1
        } else {
            obj.id = 1
        }
        product.push(obj)
        ctx.body = {
            code: 1000,
            data: obj,
            msg: '新增成功'
        }
    } else {
        ctx.body = {
            code: 400,
            data: null,
            msg: '数据验证不成功，请确认后重试'
        }
    }
}

// 编辑
let fn_put = (ctx, next) => {
    /*
        先使用id查找对应的记录(这里是数组对应的元素)
        记录参在：才能修改
        记录不存在：则返回要修改的记录或者元素不存在的提示信息
    */
    let id = ctx.request.params.id;
    let obj = ctx.request.body
    let arr = product.filter(item => {
        return item.id = id
    })
    if (arr.length > 0) {  //根据id又找到记录
        let tmpObj = arr[0]
        tmpObj.name = obj.name
        tmpObj.price = obj.price
        tmpObj.stock = obj.stock
        tmpObj.supplier = obj.supplier

        ctx.body = {
            code: 1000,
            data: tmpObj,
            msg: '修改成功'
        }
    } else {
        ctx.body = {
            code: 400,
            data: '',
            msg: '指定修改记录不存在，请确认后重试'
        }
    }
}

// 删除
let fn_delete = (ctx, next) => {
    let id = ctx.request.params.id

    // console.log(id);
    // let newArr = product.filter(item => {
    //     return id != item.id
    // })
    // product = newArr
    // ctx.body = product

    // 老胡
    let arr = product.filter(item => {
        return item.id != id
    })
    if (arr.length >= 0) {
        product = arr
        ctx.body = {
            code: 1000,
            data: { id: id },
            msg: '删除成功'
        }
    } else {
        ctx.body = {
            code: 400,
            data: '',
            msg: '你指定删除的记录不存在，请确认后重试'
        }
    }
}

// 编辑
let fn_product_id = (ctx, next) => {
    let id = ctx.request.params.id
    let arr = product.filter(item => {
        return item.id == id
    })
    if (arr.length > 0) {
        ctx.body = {
            code: 1000,
            data: arr[0],
            msg: '获取成功'
        }
    } else {
        ctx.body = {
            code: 400,
            data: null,
            msg: '获取失败'
        }
    }
}

module.exports = {
    'get /product': fn_product,  // 用于产品列表页面，返回列表信息
    'delete /product/:id': fn_delete,
    'post /product': fn_post,
    'get /product/:id':fn_product_id,
    'put /product/:id':fn_put
}